package com.qf.service.impl;

import com.qf.entity.Order;
import com.qf.mapper.OrderMapper;
import com.qf.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class OrderServiceImpl implements OrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Override
    public List<Order> selectOrdersByUserId(Integer userId) {

        return orderMapper.selectOrdersByUserId(userId);
    }

    @Override
    public void addOrder(String productName, Integer quantity, Double price, Integer userId, String createTime) {
        // 2. 转换时间格式（前端传递的是 ISO 格式字符串，需转为 Date 类型存入数据库）
        Date createDate = null;
        try {
            // 前端传递的格式是 "yyyy-MM-dd'T'HH:mm:ss.xxxZ"（如 2024-05-20T14:30:00.000Z）
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
            createDate = sdf.parse(createTime);
        } catch (ParseException e) {
            throw new RuntimeException("时间格式错误，无法解析");
        }
        Order order = new Order();
        order.setProductName(productName); // 商品名称（字段名 product_name）
        order.setQuantity(quantity);       // 商品数量（字段名 quantity）
        order.setPrice(price);             // 商品单价（字段名 price）
        order.setUserId(userId);           // 关联用户ID（字段名 user_id）
        order.setCreateTime(createDate);   // 上架时间（字段名 create_time）
        // 4. 调用Mapper插入数据
        orderMapper.addOrder(order);// 1. 数据校验（避免无效数据插入数据库）
    }

    @Override
    public void deleteOrder(Integer orderId) {
        orderMapper.deleteOrder(orderId);
    }

    @Override
    public void batchDelete(List<Integer> orids) {
        orderMapper.batchDelete(orids);
    }

    @Override
    public List<Order> findByOrdernameLike(Integer userId, String productName) {
        List<Order> orders = orderMapper.findByOrdernameLike(userId, productName);
        return orders != null ? orders : new ArrayList<>();
    }

}
